package com.cdatos.golGana.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import com.cdatos.golGana.model.base.PersistentEntity;

@Entity
@Table(name="GRUPO", uniqueConstraints = @UniqueConstraint(columnNames={"nombre"}))
public class Grupo extends PersistentEntity implements Serializable {

	/**
	 */
	private static final long serialVersionUID = 2382576212483487357L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
  
    @Column(name="NOMBRE", length=50)
    private String nombre;
   
    @Column(name="PATH_IMAGEN", length=250)
    private String pathImagen;
	
    @Column(name="PROMEDIO", precision=2, scale=3)
	private Double promedio; 
	
	@ManyToOne
	@JoinColumn(name="CAMPEONATO_ID_FK")
    private Campeonato campeonato;
    
	@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.PERSIST},
            mappedBy = "grupos",
            targetEntity = Usuario.class)
    private List<Usuario> usuarios;
        
	
    public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getPathImagen() {
		return pathImagen;
	}
	public void setPathImagen(String pathImagen) {
		this.pathImagen = pathImagen;
	}
	public Campeonato getCampeonato() {
		return campeonato;
	}
	public void setCampeonato(Campeonato campeonato) {
		this.campeonato = campeonato;
	}
	public Double getPromedio() {
		return promedio;
	}
	public void setPromedio(Double promedio) {
		this.promedio = promedio;
	}
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	public Grupo() {
	}
	
}
